package sv.gob.mh.dgii.model;

// Generated Dec 10, 2007 4:52:21 PM by Hibernate Tools 3.2.0.beta7

import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;

import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * TbObligacion generated by hbm2java
 */
@Entity
@Table(name = "TB_OBLIGACION", schema = "CATALOGOS", uniqueConstraints = {})
/* @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) */
public class TbObligacion implements Serializable {

	// Fields

	/**
	 * 
	 */
	private static final long serialVersionUID = -8278292901902093813L;

	public static final String IVA_NO_DOMICILIADO = "22";
	public static final String IVA = "20";
	public static final String RENTA = "10";
	public static final String RETENCIONES = "40";
	public static final String PAGO_A_CUENTA = "30";
	public static final String PATRIMONIAL = "11";
	public static final String ESPECIFICOS = "50";
	public static final String ESPECIFICO_51 = "51";
	public static final String F983 = "98";
	public static final String F987 = "A1";	
	public static final String F06 = "49";	
	public static final String DIFERENTE = "00";
	
	
	

	private String cobligacion;

	private TbImpuesto tbImpuesto;

	private TbPeriodicidad tbPeriodicidad;

	private String cusuario;

	private String sobligacion;

	private String dobligacion;

	private Date fiobligacion;

	private Date ffobligacion;

	private Date fhactualizacion;

	private Date fhingreso;
	
	private String bactivactacte;

	private Set<CgObligXExp> cgObligXExps = new HashSet<CgObligXExp>(0);

	private Set<TbFormOblig> tbFormObligs = new HashSet<TbFormOblig>(0);

	private Set<DfObligDicta> dfObligDictas = new HashSet<DfObligDicta>(0);

	private Set<TbTasacionObligacion> tbTasacionObligacions = new HashSet<TbTasacionObligacion>(0);

	private Set<DvColectivo> dvColectivos = new HashSet<DvColectivo>(0);

	private Set<DcSaldAntDet> dcSaldAntDets = new HashSet<DcSaldAntDet>(0);

	private Set<TbCategoriaContr> tbCategoriaContrs = new HashSet<TbCategoriaContr>(0);

	private Set<TbFecLimPres> tbFecLimPreses = new HashSet<TbFecLimPres>(0);

	private Set<DvEmision> dvEmisions = new HashSet<DvEmision>(0);

	private Set<TbDeficiencia> tbDeficiencias = new HashSet<TbDeficiencia>(0);

	private Set<DcResolDet> dcResolDets = new HashSet<DcResolDet>(0);

	private Set<RcObligacion> rcObligacions = new HashSet<RcObligacion>(0);

	private Set<TbCamposObligacion> tbCamposObligacions = new HashSet<TbCamposObligacion>(0);

	// Constructors

	/** default constructor */
	public TbObligacion() {
	}

	public TbObligacion(String cobligacion) {
		this.cobligacion = cobligacion;
	}

	/** minimal constructor */
	public TbObligacion(String cobligacion, TbImpuesto tbImpuesto, TbPeriodicidad tbPeriodicidad,
			String cusuario, String sobligacion, String dobligacion, Date fiobligacion,
			Date fhingreso) {
		this.cobligacion = cobligacion;
		this.tbImpuesto = tbImpuesto;
		this.tbPeriodicidad = tbPeriodicidad;
		this.cusuario = cusuario;
		this.sobligacion = sobligacion;
		this.dobligacion = dobligacion;
		this.fiobligacion = fiobligacion;
		this.fhingreso = fhingreso;
	}

	/** full constructor */
	public TbObligacion(String cobligacion, TbImpuesto tbImpuesto, TbPeriodicidad tbPeriodicidad,
			String cusuario, String sobligacion, String dobligacion, Date fiobligacion,
			Date ffobligacion, Date fhactualizacion, Date fhingreso, String bactivactacte, Set<CgObligXExp> cgObligXExps,
			Set<TbFormOblig> tbFormObligs, Set<DfObligDicta> dfObligDictas,
			Set<TbTasacionObligacion> tbTasacionObligacions, Set<DvColectivo> dvColectivos,
			Set<DcSaldAntDet> dcSaldAntDets, Set<TbCategoriaContr> tbCategoriaContrs,
			Set<TbFecLimPres> tbFecLimPreses, Set<DvEmision> dvEmisions,
			Set<TbDeficiencia> tbDeficiencias, Set<DcResolDet> dcResolDets,
			Set<RcObligacion> rcObligacions, Set<TbCamposObligacion> tbCamposObligacions) {
		this.cobligacion = cobligacion;
		this.tbImpuesto = tbImpuesto;
		this.tbPeriodicidad = tbPeriodicidad;
		this.cusuario = cusuario;
		this.sobligacion = sobligacion;
		this.dobligacion = dobligacion;
		this.fiobligacion = fiobligacion;
		this.ffobligacion = ffobligacion;
		this.fhactualizacion = fhactualizacion;
		this.fhingreso = fhingreso;
		this.bactivactacte = bactivactacte;
		this.cgObligXExps = cgObligXExps;
		this.tbFormObligs = tbFormObligs;
		this.dfObligDictas = dfObligDictas;
		this.tbTasacionObligacions = tbTasacionObligacions;
		this.dvColectivos = dvColectivos;

		this.dcSaldAntDets = dcSaldAntDets;
		this.tbCategoriaContrs = tbCategoriaContrs;
		this.tbFecLimPreses = tbFecLimPreses;
		this.dvEmisions = dvEmisions;
		this.tbDeficiencias = tbDeficiencias;
		this.dcResolDets = dcResolDets;
		this.rcObligacions = rcObligacions;
		this.tbCamposObligacions = tbCamposObligacions;
	}

	// Property accessors
	@Id
	@Column(name = "C_OBLIGACION", unique = true, nullable = false, insertable = true, updatable = true, length = 2)
	@NotEmpty(message="{NotEmpty.TbObligacion.cobligacion}")
        public String getCobligacion() {
		return this.cobligacion;
	}

	public void setCobligacion(String cobligacion) {
		this.cobligacion = cobligacion;
	}

	@ManyToOne(cascade = {}, fetch = FetchType.EAGER)
	@JoinColumn(name = "C_IMPUESTO", unique = false, nullable = false, insertable = true, updatable = true)
    @NotNull
	public TbImpuesto getTbImpuesto() {
		return this.tbImpuesto;
	}

	public void setTbImpuesto(TbImpuesto tbImpuesto) {
		this.tbImpuesto = tbImpuesto;
	}

	@ManyToOne(cascade = {}, fetch = FetchType.EAGER)
	@JoinColumn(name = "C_PERIODICIDAD", unique = false, nullable = false, insertable = true, updatable = true)
    @NotNull
	public TbPeriodicidad getTbPeriodicidad() {
		return this.tbPeriodicidad;
	}

	public void setTbPeriodicidad(TbPeriodicidad tbPeriodicidad) {
		this.tbPeriodicidad = tbPeriodicidad;
	}

	@Column(name = "C_USUARIO", unique = false, nullable = false, insertable = true, updatable = true, length = 30)
    @NotEmpty
    public String getCusuario() {
		return this.cusuario;
	}

	public void setCusuario(String cusuario) {
		this.cusuario = cusuario;
	}

	@Column(name = "S_OBLIGACION", unique = false, nullable = false, insertable = true, updatable = true, length = 10)
    @NotEmpty
    public String getSobligacion() {
		return this.sobligacion;
	}

	public void setSobligacion(String sobligacion) {
		this.sobligacion = sobligacion;
	}

	@Column(name = "D_OBLIGACION", unique = false, nullable = false, insertable = true, updatable = true, length = 50)
    public String getDobligacion() {
		return this.dobligacion;
	}

	public void setDobligacion(String dobligacion) {
		this.dobligacion = dobligacion;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "FI_OBLIGACION", unique = false, nullable = false, insertable = true, updatable = true, length = 7)
	@NotNull
	@DateTimeFormat(pattern="dd/MM/yyyy")
	public Date getFiobligacion() {
		return this.fiobligacion;
	}

	public void setFiobligacion(Date fiobligacion) {
		this.fiobligacion = fiobligacion;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "FF_OBLIGACION", unique = false, nullable = true, insertable = true, updatable = true, length = 7)
	@DateTimeFormat(pattern="dd/MM/yyyy")
	public Date getFfobligacion() {
		return this.ffobligacion;
	}

	public void setFfobligacion(Date ffobligacion) {
		this.ffobligacion = ffobligacion;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "FH_ACTUALIZACION", unique = false, nullable = true, insertable = true, updatable = true, length = 7)
	@NotNull
	public Date getFhactualizacion() {
		return this.fhactualizacion;
	}

	public void setFhactualizacion(Date fhactualizacion) {
		this.fhactualizacion = fhactualizacion;
	}

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "FH_INGRESO", unique = false, nullable = false, insertable = true, updatable = true, length = 7)
	@NotNull
	public Date getFhingreso() {
		return this.fhingreso;
	}

	public void setFhingreso(Date fhingreso) {
		this.fhingreso = fhingreso;
	}

	@Column(name = "B_ACTIVA_CTACTE", length = 1)
	public String getBactivactacte() {
		return this.bactivactacte;
	}

	public void setBactivactacte(String bactivactacte) {
		this.bactivactacte = bactivactacte;
	}

	@OneToMany( fetch = FetchType.LAZY, mappedBy = "tbObligacion")
	public Set<CgObligXExp> getCgObligXExps() {
		return this.cgObligXExps;
	}

	public void setCgObligXExps(Set<CgObligXExp> cgObligXExps) {
		this.cgObligXExps = cgObligXExps;
	}

	@OneToMany( fetch = FetchType.LAZY, mappedBy = "tbObligacion")
	public Set<TbFormOblig> getTbFormObligs() {
		return this.tbFormObligs;
	}

	public void setTbFormObligs(Set<TbFormOblig> tbFormObligs) {
		this.tbFormObligs = tbFormObligs;
	}

	@OneToMany( fetch = FetchType.LAZY, mappedBy = "tbObligacion")
	public Set<DfObligDicta> getDfObligDictas() {
		return this.dfObligDictas;
	}

	public void setDfObligDictas(Set<DfObligDicta> dfObligDictas) {
		this.dfObligDictas = dfObligDictas;
	}

	@OneToMany( fetch = FetchType.LAZY, mappedBy = "tbObligacion")
	public Set<TbTasacionObligacion> getTbTasacionObligacions() {
		return this.tbTasacionObligacions;
	}

	public void setTbTasacionObligacions(Set<TbTasacionObligacion> tbTasacionObligacions) {
		this.tbTasacionObligacions = tbTasacionObligacions;
	}

	@OneToMany( fetch = FetchType.LAZY, mappedBy = "tbObligacion")
	public Set<DvColectivo> getDvColectivos() {
		return this.dvColectivos;
	}

	public void setDvColectivos(Set<DvColectivo> dvColectivos) {
		this.dvColectivos = dvColectivos;
	}

	@OneToMany( fetch = FetchType.LAZY, mappedBy = "tbObligacion")
	public Set<DcSaldAntDet> getDcSaldAntDets() {
		return this.dcSaldAntDets;
	}

	public void setDcSaldAntDets(Set<DcSaldAntDet> dcSaldAntDets) {
		this.dcSaldAntDets = dcSaldAntDets;
	}

	@OneToMany( fetch = FetchType.LAZY, mappedBy = "tbObligacion")
	public Set<TbCategoriaContr> getTbCategoriaContrs() {
		return this.tbCategoriaContrs;
	}

	public void setTbCategoriaContrs(Set<TbCategoriaContr> tbCategoriaContrs) {
		this.tbCategoriaContrs = tbCategoriaContrs;
	}

	@OneToMany( fetch = FetchType.LAZY, mappedBy = "tbObligacion")
	public Set<TbFecLimPres> getTbFecLimPreses() {
		return this.tbFecLimPreses;
	}

	public void setTbFecLimPreses(Set<TbFecLimPres> tbFecLimPreses) {
		this.tbFecLimPreses = tbFecLimPreses;
	}

	@OneToMany( fetch = FetchType.LAZY, mappedBy = "tbObligacion")
	public Set<DvEmision> getDvEmisions() {
		return this.dvEmisions;
	}

	public void setDvEmisions(Set<DvEmision> dvEmisions) {
		this.dvEmisions = dvEmisions;
	}

	@OneToMany( fetch = FetchType.LAZY, mappedBy = "tbObligacion")
	public Set<TbDeficiencia> getTbDeficiencias() {
		return this.tbDeficiencias;
	}

	public void setTbDeficiencias(Set<TbDeficiencia> tbDeficiencias) {
		this.tbDeficiencias = tbDeficiencias;
	}

	@OneToMany( fetch = FetchType.LAZY, mappedBy = "tbObligacion")
	public Set<DcResolDet> getDcResolDets() {
		return this.dcResolDets;
	}

	public void setDcResolDets(Set<DcResolDet> dcResolDets) {
		this.dcResolDets = dcResolDets;
	}

	@OneToMany( fetch = FetchType.LAZY, mappedBy = "tbObligacion")
	public Set<RcObligacion> getRcObligacions() {
		return this.rcObligacions;
	}

	public void setRcObligacions(Set<RcObligacion> rcObligacions) {
		this.rcObligacions = rcObligacions;
	}

	@OneToMany( fetch = FetchType.LAZY, mappedBy = "tbObligacion")
	public Set<TbCamposObligacion> getTbCamposObligacions() {
		return this.tbCamposObligacions;
	}

	public void setTbCamposObligacions(Set<TbCamposObligacion> tbCamposObligacions) {
		this.tbCamposObligacions = tbCamposObligacions;
	}

}
